#!/bin/bash

# 输入文件名
input_file=$1

# 初始化变量
princname=""
keytabname=""

# 逐行读取文件
while IFS= read -r line
do
    
  # 去掉开头和结尾的空格
  trimmed_line="$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')"

  # 如果是空行或以#开头的行，跳过
  if [ -z "$trimmed_line" ] || [[ "$trimmed_line" =~ ^# ]]; then
    continue
  fi

    # 检查并设置 princname
    if [[ "$trimmed_line" == princname*":"* ]]; then
        princname="${trimmed_line#*:}"  # 提取冒号后面的值，并去除前导空格
        princname="${princname%% *}"
        # 注意：这里使用了参数扩展来去除冒号和冒号后面的空格
        # 如果值后面有多余的空格，它们也会被保留在 princname 变量中
        # 如果需要去除这些空格，可以使用 princname="${princname%% *}"
        if [ -z "$princname" ]; then
           echo "princname不能为空！！！"
           exit;
        fi
    fi
    # 检查并设置 keytabname
    if [[ "$trimmed_line" == keytabname*":"* ]]; then
        keytabname="${trimmed_line#*:}"  # 同上，提取冒号后面的值，并去除前导空格
        keytabname="${keytabname%% *}"
        if [ -z "$keytabname" ]; then
           echo "keytabname不能为空！！！"
           exit;
        fi
    fi
    # 如果行中既不包含 princname 也不包含 keytabname，则组成生成keytab命令并执行。
    if [[ ! "$trimmed_line" == princname*":"* && ! "$trimmed_line" == keytabname*":"* ]]; then
        sudo kadmin.local -q "addprinc -randkey $princname/$trimmed_line@{{ kdc_domain }}"
        sudo kadmin.local -q "xst -norandkey -k {{ keytabs_path }}/$keytabname $princname/$trimmed_line@{{ kdc_domain }}"
    fi
done < "$input_file"
